package offer;

/**
 * Creared with IntelliJ IDEA.
 * Description:一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。
 * User:yxd
 * Date:2022-07-17
 * Time:20:04
 */
public class JZ71 {
    public int jumpFloorII(int target) {
        //状态定义 F(i)表示跳上i级台阶的所有跳法
        //状态转移方程：F(i) = F(i- 1) + F(i- 2) + 。。。 F(1)
        //赋初值F(1) = 1 F(0) = 1
        int[] dp = new int[target + 1];
        dp[0] = 1;
        dp[1] = 1;
        for(int i = 2;i <= target;i ++){
            int j = i;
            for(;j >= 0;j --){
                dp[i] += dp[j];
            }
        }
        return dp[target];
    }
}
